package com.admin.hessian;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.admin.bean.MobileUserBean;
import com.admin.dao.ConsumeOrderDao;
import com.admin.dao.MobileUserDao;
import com.admin.dao.ProvinceDao;
import com.admin.util.BaseUtil;

public class UserService implements IUserService{

	private static final Logger log = Logger.getLogger(UserService.class);
	
	@Autowired private MobileUserDao mobileUserDao;
	@Autowired private ProvinceDao provinceDao;
	@Autowired private ConsumeOrderDao consumeOrderDao;
	
	public String insertUser(MobileUserBean user) {
		log.info("==============进入用户注册第一步==============");
		String result = "";
		String ismi = user.getIsmi();
		String smsp = user.getSmsp();
		log.info("smsp:"+smsp);
		log.info("ismi:"+ismi);
		if(StringUtils.isNotEmpty(ismi)){
			MobileUserBean userBean = mobileUserDao.findBySmspAndIsmi(smsp, ismi);
			if(null==userBean){
				log.info("该用户为新用户,需要发短信！");
				try{
					user.setProvinceId(provinceDao.getProvinceIdBySmsp(smsp));
					user.setRegCount(0);
					mobileUserDao.addUser(user);
					result = smsp+"#"+ismi+",0";
				}catch(RuntimeException e){
					e.printStackTrace();
				} 
			}else{
				log.info("该用户已经了完成注册第一步");
				String telPhone = userBean.getTelPhone();
				if(telPhone!=null && !"".equals(telPhone)){
					if(smsp.startsWith("R")){//随机MID用户
						int count = consumeOrderDao.findCountByUserId(userBean.getUserId());//取该用户消费次数
						if(count==0){//没有消费
							int regCount = user.getRegCount();
							if(regCount>=5){
								log.info("该用户是MID随机用户,已经完成注册第二步了，但没有消费过,且已经注册大于5次，不再发生注册短信，手机号码为："+telPhone);
								result = telPhone+",1";
							}else{
								log.info("该用户是MID随机用户,已经完成注册第二步了，但没有消费过,且已经注册少于5次，需要从新发生注册短信注册");
								result = smsp+"#"+ismi+",0";
							}
						}else{//已经消费过了
							log.info("该用户已经完成第二步了，并已经消费过了，不需要发短信，手机号码为："+telPhone);
							result = telPhone+",1";
						}
					}else{//正常用户
						log.info("该用户是正常用户，且完成第二步了，不需要发短信，手机号码为："+telPhone);
						result = telPhone+",1";
					}
				}else{
					log.info("该用户未完成第二步注册，需要发短信!");
					result = smsp+"#"+ismi+",0";
				}
			}
		}else{
			log.info("ISMI与SMSP为空。");
			ismi = BaseUtil.genRandomNum(4);
			smsp = "R"+user.getSid()+user.getCid()+BaseUtil.genRandomNum(5);
			log.info("产生ISMI："+ismi+",SMSP:"+smsp);
			user.setIsmi(ismi);
			user.setSmsp(smsp);
			try{
				user.setRegCount(0);
				mobileUserDao.addUser(user);
			}catch(RuntimeException e){
				e.printStackTrace();
			}
			result = smsp+"#"+ismi+",0";
		}
		log.info("==============用户第一步注册结束==============");
		return result;
	}
}
